library(data.table)
data.table 1.14.2 using 1 threads (see ?getDTthreads).  Latest news: r-datatable.com
**********
This installation of data.table has not detected OpenMP support. It should still work but in single-threaded mode.
This is a Mac. Please read https://mac.r-project.org/openmp/. Please engage with Apple and ask them for support. Check r-datatable.com for updates, and our Mac instructions here: https://github.com/Rdatatable/data.table/wiki/Installation. After several years of many reports of installation problems on Mac, it's time to gingerly point out that there have been no similar problems on Windows or Linux.
**********
# sc <- spark_connect(master = "local")

# if(file.exists("source")) unlink("source", TRUE)
# if(file.exists("source-out")) unlink("source-out", TRUE)
# 
# stream_generate_test(iterations = 1)
# list.files("source")
# 
# read_folder <- stream_read_csv(sc, "source")

# spark_disconnect(sc)
unique(dt$TIME)[order(unique(dt$TIME))]
  [1] "00:00:00" "00:05:00" "00:10:00" "00:15:00" "00:20:00" "00:25:00" "00:30:00" "00:35:00" "00:40:00"
 [10] "00:45:00" "00:50:00" "00:55:00" "01:00:00" "01:05:00" "01:10:00" "01:15:00" "01:20:00" "01:25:00"
 [19] "01:30:00" "01:35:00" "01:40:00" "01:45:00" "01:50:00" "01:55:00" "02:00:00" "02:05:00" "02:10:00"
 [28] "02:15:00" "02:20:00" "02:25:00" "02:30:00" "02:35:00" "02:40:00" "02:45:00" "02:50:00" "02:55:00"
 [37] "03:00:00" "03:05:00" "03:10:00" "03:15:00" "03:20:00" "03:25:00" "03:30:00" "03:35:00" "03:40:00"
 [46] "03:45:00" "03:50:00" "03:55:00" "04:00:00" "04:05:00" "04:10:00" "04:15:00" "04:20:00" "04:25:00"
 [55] "04:30:00" "04:35:00" "04:40:00" "04:45:00" "04:50:00" "04:55:00" "05:00:00" "05:05:00" "05:10:00"
 [64] "05:15:00" "05:20:00" "05:25:00" "05:30:00" "05:35:00" "05:40:00" "05:45:00" "05:50:00" "05:55:00"
 [73] "06:00:00" "06:05:00" "06:10:00" "06:15:00" "06:20:00" "06:25:00" "06:30:00" "06:35:00" "06:40:00"
 [82] "06:45:00" "06:50:00" "06:55:00" "07:00:00" "07:05:00" "07:10:00" "07:15:00" "07:20:00" "07:25:00"
 [91] "07:30:00" "07:35:00" "07:40:00" "07:45:00" "07:50:00" "07:55:00" "08:00:00" "08:05:00" "08:10:00"
[100] "08:15:00" "08:20:00" "08:25:00" "08:30:00" "08:35:00" "08:40:00" "08:45:00" "08:50:00" "08:55:00"
[109] "09:00:00" "09:05:00" "09:10:00" "09:15:00" "09:20:00" "09:25:00" "09:30:00" "09:35:00" "09:40:00"
[118] "09:45:00" "09:50:00" "09:55:00" "10:00:00" "10:05:00" "10:10:00" "10:15:00" "10:20:00" "10:25:00"
[127] "10:30:00" "10:35:00" "10:40:00" "10:45:00" "10:50:00" "10:55:00" "11:00:00" "11:05:00" "11:10:00"
[136] "11:15:00" "11:20:00" "11:25:00" "11:30:00" "11:35:00" "11:40:00" "11:45:00" "11:50:00" "11:55:00"
[145] "12:00:00" "12:05:00" "12:10:00" "12:15:00" "12:20:00" "12:25:00" "12:30:00" "12:35:00" "12:40:00"
[154] "12:45:00" "12:50:00" "12:55:00" "13:00:00" "13:05:00" "13:10:00" "13:15:00" "13:20:00" "13:25:00"
[163] "13:30:00" "13:35:00" "13:40:00" "13:45:00" "13:50:00" "13:55:00" "14:00:00" "14:05:00" "14:10:00"
[172] "14:15:00" "14:20:00" "14:25:00" "14:30:00" "14:35:00" "14:40:00" "14:45:00" "14:50:00" "14:55:00"
[181] "15:00:00" "15:05:00" "15:10:00" "15:15:00" "15:20:00" "15:25:00" "15:30:00" "15:35:00" "15:40:00"
[190] "15:45:00" "15:50:00" "15:55:00" "16:00:00" "16:05:00" "16:10:00" "16:15:00" "16:20:00" "16:25:00"
[199] "16:30:00" "16:35:00" "16:40:00" "16:45:00" "16:50:00" "16:55:00" "17:00:00" "17:05:00" "17:10:00"
[208] "17:15:00" "17:20:00" "17:25:00" "17:30:00" "17:35:00" "17:40:00" "17:45:00" "17:50:00" "17:55:00"
[217] "18:00:00" "18:05:00" "18:10:00" "18:15:00" "18:20:00" "18:25:00" "18:30:00" "18:35:00" "18:40:00"
[226] "18:45:00" "18:50:00" "18:55:00" "19:00:00" "19:05:00" "19:10:00" "19:15:00" "19:20:00" "19:25:00"
[235] "19:30:00" "19:35:00" "19:40:00" "19:45:00" "19:50:00" "19:55:00" "20:00:00" "20:05:00" "20:10:00"
[244] "20:15:00" "20:20:00" "20:25:00" "20:30:00" "20:35:00" "20:40:00" "20:45:00" "20:50:00" "20:55:00"
[253] "21:00:00" "21:05:00" "21:10:00" "21:15:00" "21:20:00" "21:25:00" "21:30:00" "21:35:00" "21:40:00"
[262] "21:45:00" "21:50:00" "21:55:00" "22:00:00" "22:05:00" "22:10:00" "22:15:00" "22:20:00" "22:25:00"
[271] "22:30:00" "22:35:00" "22:40:00" "22:45:00" "22:50:00" "22:55:00" "23:00:00" "23:05:00" "23:10:00"
[280] "23:15:00" "23:20:00" "23:25:00" "23:30:00" "23:35:00" "23:40:00" "23:45:00" "23:50:00" "23:55:00"

I DID A LOG TRANSFORM

library(GGally)

summary(dt)

sapply(unique(dtMeta$PARK), function(x) {
  rides <- dtMeta$RIDENAME[dtMeta$PARK == x]
  cols <- (1:ncol(dt))[grepl(paste0(rides, collapse = "|"), colnames(dt))]
  print(ggpairs(dt[, ..cols], title = paste("Correlation plot for rides in", x), 
                upper = list(continuous = wrap("cor", size = 3)),
                progress = FALSE) +
          theme(text = element_text(size = 6)))
})

TIME IS IN SECONDS SINCE MIDNIGHT

set.seed(1234)
rowPicker <- sample(c(TRUE, FALSE), nrow(dt), replace = TRUE, prob = c(.5, .5))
train <- dt[rowPicker, ]
test <- dt[!rowPicker, ]
colnames(train) <- toupper(colnames(train))
# lapply(unique(dtMeta$PARK), function(x) {
lapply(unique(dtMeta$PARK), function(x) {
  # get rides that are in the same park, date, and time
  rides <-
    c(colnames(train)[grepl(paste0(c(toupper(dtMeta$RIDENAME[dtMeta$PARK == x]),
                                     paste0("(^", toupper(x), ")|(", toupper(x), "$)")),
                                   collapse = "|"),
                            colnames(train))],
      "MONTH", "DAY", "TIME",
      "WDW_TICKET_SEASON", "DAYOFWEEK", "DAYOFYEAR", "WEEKOFYEAR", "MONTHOFYEAR", "YEAR", "SEASON", "HOLIDAYPX", "HOLIDAYM", "HOLIDAYN", "HOLIDAY", "WDWTICKETSEASON", "WDWRACEN", "WDWEVENTN", "WDWEVENT", "WDWRACE", "WDWSEASON", "WDWMAXTEMP", "WDWMINTEMP", "WDWMEANTEMP", "HOLIDAYJ", "INSESSION", "INSESSION_ENROLLMENT", "INSESSION_WDW", "INSESSION_DLR", "INSESSION_SQRT_WDW", "INSESSION_SQRT_DLR", "INSESSION_CALIFORNIA", "INSESSION_DC", "INSESSION_CENTRAL_FL", "INSESSION_DRIVE1_FL", "INSESSION_DRIVE2_FL", "INSESSION_DRIVE_CA", "INSESSION_FLORIDA", "INSESSION_MARDI_GRAS", "INSESSION_MIDWEST", "INSESSION_NY_NJ", "INSESSION_NY_NJ_PA", "INSESSION_NEW_ENGLAND", "INSESSION_NEW_JERSEY", "INSESSION_NOTHWEST", "INSESSION_PLANES", "INSESSION_SOCAL", "INSESSION_SOUTHWEST", "SUNSET_WDW", "PARTYSEASON_WDW", "WDWMINTEMP_MEAN", "WEATHER_WDWHIGH", "WEATHER_WDWLOW", "WEATHER_WDWPRECIP")
  # get the actual ride time variables
  actuals <- rides[grepl("(SACTMIN)", rides)]
  # return decision trees for the actual ride time variables
  return(trees <- sapply(actuals, function(y) {
    tr <- rpart(as.formula(paste(y, "~ .")), train[, ..rides])
    rpart.plot(tr, main = y)
    return(tr)
    }))
})

[[1]]
                    DWARFS_TRAIN_SACTMIN PIRATES_OF_CARIBBEAN_SACTMIN SPLASH_MOUNTAIN_SACTMIN
frame               data.frame,8         data.frame,8                 data.frame,8           
where               integer,4124         integer,7834                 integer,4290           
call                expression           expression                   expression             
terms               terms,3              terms,3                      terms,3                
cptable             numeric,30           numeric,40                   numeric,25             
method              "anova"              "anova"                      "anova"                
parms               NULL                 NULL                         NULL                   
control             list,9               list,9                       list,9                 
functions           list,2               list,2                       list,2                 
numresp             1                    1                            1                      
splits              numeric,170          numeric,275                  numeric,125            
csplit              integer,86           integer,270                  integer,84             
variable.importance numeric,4            numeric,22                   numeric,4              
y                   numeric,4124         numeric,7834                 numeric,4290           
ordered             logical,98           logical,98                   logical,98             
na.action           na.rpart,265627      na.rpart,261917              na.rpart,265461        

[[2]]
                    ALIEN_SAUCERS_SACTMIN ROCK_N_ROLLERCOASTER_SACTMIN SLINKY_DOG_SACTMIN
frame               data.frame,8          data.frame,8                 data.frame,8      
where               integer,1397          integer,4369                 integer,2802      
call                expression            expression                   expression        
terms               terms,3               terms,3                      terms,3           
cptable             numeric,45            numeric,30                   numeric,35        
method              "anova"               "anova"                      "anova"           
parms               NULL                  NULL                         NULL              
control             list,9                list,9                       list,9            
functions           list,2                list,2                       list,2            
numresp             1                     1                            1                 
splits              numeric,365           numeric,185                  numeric,270       
csplit              integer,90            integer,264                  integer,35        
variable.importance numeric,19            numeric,8                    numeric,13        
y                   numeric,1397          numeric,4369                 numeric,2802      
ordered             logical,97            logical,97                   logical,97        
na.action           na.rpart,268354       na.rpart,265382              na.rpart,266949   
                    TOY_STORY_MANIA_SACTMIN
frame               data.frame,8           
where               integer,6111           
call                expression             
terms               terms,3                
cptable             numeric,35             
method              "anova"                
parms               NULL                   
control             list,9                 
functions           list,2                 
numresp             1                      
splits              numeric,235            
csplit              integer,90             
variable.importance numeric,10             
y                   numeric,6111           
ordered             logical,97             
na.action           na.rpart,263640        

[[3]]
[[3]]$DINOSAUR_SACTMIN
n=3433 (266318 observations deleted due to missingness)

node), split, n, deviance, yval
      * denotes terminal node

 1) root 3433 2698.63300 2.564218  
   2) DINOSAUR_SPOSTMIN< 3.064439 1780 1081.64200 2.114991  
     4) DINOSAUR_SPOSTMIN< 2.553265 1072  602.76020 1.884241 *
     5) DINOSAUR_SPOSTMIN>=2.553265 708  335.37670 2.464377 *
   3) DINOSAUR_SPOSTMIN>=3.064439 1653  870.97010 3.047958  
     6) CAPACITYLOSTWGT_AK< 1.312816e+07 193  127.65900 2.408204 *
     7) CAPACITYLOSTWGT_AK>=1.312816e+07 1460  653.87680 3.132528  
      14) DINOSAUR_SPOSTMIN< 3.725516 1091  485.09920 2.992278 *
      15) DINOSAUR_SPOSTMIN>=3.725516 369   83.86777 3.547198 *

[[3]]$EXPEDITION_EVEREST_SACTMIN
n=5461 (264290 observations deleted due to missingness)

node), split, n, deviance, yval
      * denotes terminal node

 1) root 5461 4333.7460 2.380406  
   2) EXPEDITION_EVEREST_SPOSTMIN< 2.519476 1419  776.9939 1.493982  
     4) EXPEDITION_EVEREST_SPOSTMIN< 1.898249 757  446.4613 1.279994 *
     5) EXPEDITION_EVEREST_SPOSTMIN>=1.898249 662  256.2310 1.738678 *
   3) EXPEDITION_EVEREST_SPOSTMIN>=2.519476 4042 2050.3470 2.691598  
     6) EXPEDITION_EVEREST_SPOSTMIN< 3.282834 1960  747.9855 2.445560  
      12) EXPEDITION_EVEREST_SPOSTMIN< 2.73439 513  179.2926 2.195171 *
      13) EXPEDITION_EVEREST_SPOSTMIN>=2.73439 1447  525.1280 2.534330 *
     7) EXPEDITION_EVEREST_SPOSTMIN>=3.282834 2082 1072.0180 2.923219  
      14) TIME>=58650 435  313.8529 2.640406 *
      15) TIME< 58650 1647  714.1831 2.997914 *

[[3]]$FLIGHT_OF_PASSAGE_SACTMIN
n=2862 (266889 observations deleted due to missingness)

node), split, n, deviance, yval
      * denotes terminal node

 1) root 2862 1389.07300 3.909003  
   2) FLIGHT_OF_PASSAGE_SPOSTMIN< 4.107685 1105  351.44090 3.460887  
     4) FLIGHT_OF_PASSAGE_SPOSTMIN< 3.65156 264   63.53720 3.050121 *
     5) FLIGHT_OF_PASSAGE_SPOSTMIN>=3.65156 841  229.37620 3.589831  
      10) TIME< 27750 223   90.70096 3.267808 *
      11) TIME>=27750 618  107.20600 3.706030 *
   3) FLIGHT_OF_PASSAGE_SPOSTMIN>=4.107685 1757  676.18860 4.190828  
     6) FLIGHT_OF_PASSAGE_SPOSTMIN< 4.532595 768  259.11680 4.059790  
      12) SEASON=CHRISTMAS,CHRISTMAS PEAK,EASTER,FALL,HALLOWEEN,JULY 4TH,MARDI GRAS,MARTIN LUTHER KING JUNIOR DAY,PRESIDENTS WEEK,SEPTEMBER LOW,SPRING,SUMMER BREAK,THANKSGIVING,WINTER 751  191.64590 4.038610 *
      13) SEASON=COLUMBUS DAY,JERSEY WEEK,MEMORIAL DAY 17   52.25164 4.995438 *
     7) FLIGHT_OF_PASSAGE_SPOSTMIN>=4.532595 989  393.64370 4.292586  
      14) AKCLOSETOM< 66600 16   27.32406 3.018882 *
      15) AKCLOSETOM>=66600 973  339.93570 4.313530  
        30) EXPEDITION_EVEREST_SPOSTMIN< 3.613022 789  273.62270 4.235112 *
        31) EXPEDITION_EVEREST_SPOSTMIN>=3.613022 184   40.65580 4.649792 *

[[3]]$KILIMANJARO_SAFARIS_SACTMIN
n=4088 (265663 observations deleted due to missingness)

node), split, n, deviance, yval
      * denotes terminal node

 1) root 4088 3565.97700 2.695710  
   2) KILIMANJARO_SAFARIS_SPOSTMIN< 2.865108 1335  880.53540 1.948064 *
   3) KILIMANJARO_SAFARIS_SPOSTMIN>=2.865108 2753 1577.34400 3.058263  
     6) KILIMANJARO_SAFARIS_SPOSTMIN< 3.668808 1225  563.39930 2.822646  
      12) KILIMANJARO_SAFARIS_SPOSTMIN< 3.313731 733  378.17910 2.666737 *
      13) KILIMANJARO_SAFARIS_SPOSTMIN>=3.313731 492  140.85780 3.054924 *
     7) KILIMANJARO_SAFARIS_SPOSTMIN>=3.668808 1528  891.41760 3.247157  
      14) WDWSEASON=HALLOWEEN,SEPTEMBER LOW 53   33.03335 2.310051 *
      15) WDWSEASON=CHRISTMAS,CHRISTMAS PEAK,COLUMBUS DAY,EASTER,FALL,JERSEY WEEK,JULY 4TH,MARDI GRAS,MARTIN LUTHER KING JUNIOR DAY,MEMORIAL DAY,PRESIDENTS WEEK,SPRING,SUMMER BREAK,THANKSGIVING,WINTER 1475  810.16900 3.280829  
        30) KILIMANJARO_SAFARIS_SPOSTMIN< 3.955091 1041  547.01730 3.136783 *
        31) KILIMANJARO_SAFARIS_SPOSTMIN>=3.955091 434  189.74120 3.626342 *

[[3]]$NAVI_RIVER_SACTMIN
n=2119 (267632 observations deleted due to missingness)

node), split, n, deviance, yval
      * denotes terminal node

 1) root 2119 1725.19300 3.052040  
   2) NAVI_RIVER_SPOSTMIN< 3.212072 539  384.73790 2.075067  
     4) NAVI_RIVER_SPOSTMIN< 2.358371 267  194.40170 1.730480  
       8) FLIGHT_OF_PASSAGE_SPOSTMIN< 4.190152 137   95.99198 1.476812 *
       9) FLIGHT_OF_PASSAGE_SPOSTMIN>=4.190152 130   80.30382 1.997807 *
     5) NAVI_RIVER_SPOSTMIN>=2.358371 272  127.51150 2.413321 *
   3) NAVI_RIVER_SPOSTMIN>=3.212072 1580  650.48920 3.385324  
     6) NAVI_RIVER_SPOSTMIN< 3.850563 984  316.45130 3.171377  
      12) NAVI_RIVER_SPOSTMIN< 3.422194 260   49.79574 2.896525 *
      13) NAVI_RIVER_SPOSTMIN>=3.422194 724  239.96070 3.270081  
        26) TIME>=68400 77   31.38410 2.840470 *
        27) TIME< 68400 647  192.67370 3.321209  
          54) TIME< 33750 224   64.50204 3.056515 *
          55) TIME>=33750 423  104.16660 3.461379 *
     7) NAVI_RIVER_SPOSTMIN>=3.850563 596  214.63430 3.738552  
      14) TIME>=69150 62   31.67787 3.151101 *
      15) TIME< 69150 534  159.07610 3.806758  
        30) TIME< 33750 102   33.66374 3.369943 *
        31) TIME>=33750 432  101.35490 3.909894 *


[[4]]
                    SOARIN_SACTMIN  SPACESHIP_EARTH_SACTMIN
frame               data.frame,8    data.frame,8           
where               integer,4982    integer,3353           
call                expression      expression             
terms               terms,3         terms,3                
cptable             numeric,25      numeric,35             
method              "anova"         "anova"                
parms               NULL            NULL                   
control             list,9          list,9                 
functions           list,2          list,2                 
numresp             1               1                      
splits              numeric,155     numeric,195            
csplit              integer,88      integer,246            
variable.importance numeric,9       numeric,4              
y                   numeric,4982    numeric,3353           
ordered             logical,85      logical,85             
na.action           na.rpart,264769 na.rpart,266398        

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKLS0tCgpgYGB7cn0KbGlicmFyeShkZXdleSkKbGlicmFyeShkYXRhLnRhYmxlKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShzcGFya2x5cikKClN5cy5zZXRlbnYoSkFWQV9IT01FID0gIi9MaWJyYXJ5L0phdmEvSmF2YVZpcnR1YWxNYWNoaW5lcy96dWx1LTExLmpkay9Db250ZW50cy9Ib21lIikKYGBgCgpgYGB7cn0KIyBzYyA8LSBzcGFya19jb25uZWN0KG1hc3RlciA9ICJsb2NhbCIpCgojIGlmKGZpbGUuZXhpc3RzKCJzb3VyY2UiKSkgdW5saW5rKCJzb3VyY2UiLCBUUlVFKQojIGlmKGZpbGUuZXhpc3RzKCJzb3VyY2Utb3V0IikpIHVubGluaygic291cmNlLW91dCIsIFRSVUUpCiMgCiMgc3RyZWFtX2dlbmVyYXRlX3Rlc3QoaXRlcmF0aW9ucyA9IDEpCiMgbGlzdC5maWxlcygic291cmNlIikKIyAKIyByZWFkX2ZvbGRlciA8LSBzdHJlYW1fcmVhZF9jc3Yoc2MsICJzb3VyY2UiKQoKIyBzcGFya19kaXNjb25uZWN0KHNjKQpgYGAKCmBgYHtyfQojIGxvYWQgdGhlIHdhaXQgdGltZSBmaWxlcwpmaWxlcyA8LQogIGRhdGEudGFibGUoImZpbGVQYXRoIiA9IGdyZXAoIipcXC5jc3YiLCBsaXN0LmZpbGVzKCJkYXRhLyIpLCB2YWx1ZSA9IFRSVUUpKSAlPiUKICAuWywgInJpZGVOYW1lIiA6PSAgc3ViKCIoXFxfb2xkKT9cXC5jc3YiLCAiIiwgZmlsZVBhdGgpXSAlPiUKICAuWywgcmlkZU5hbWUgOj0gaWZlbHNlKHJpZGVOYW1lID09ICI3X2R3YXJmc190cmFpbiIsICJkd2FyZnNfdHJhaW4iLCByaWRlTmFtZSldCgpyb3VuZF90aW1lID0gZnVuY3Rpb24oeCwgcHJlY2lzaW9uLCBtZXRob2QgPSByb3VuZCkgewogIGlmICgiUE9TSVhjdCIgJWluJSBjbGFzcyh4KSA9PSBGQUxTRSkKICAgIHN0b3AoInggbXVzdCBiZSBQT1NJWGN0IikKICAKICB0eiA9IGF0dHJpYnV0ZXMoeCkkdHpvbmUKICBzZWNzX3JvdW5kZWQgPSBtZXRob2QoYXMubnVtZXJpYyh4KSAvIHByZWNpc2lvbikgKiBwcmVjaXNpb24KICBhcy5QT1NJWGN0KHNlY3Nfcm91bmRlZCwgdHogPSB0eiwgb3JpZ2luID0gIjE5NzAtMDEtMDEiKQp9Cgpsb25nZXJEYXRhIDwtIGZ1bmN0aW9uKHgpIHsKICByYmluZGxpc3QoCiAgICBsaXN0KHggJT4lIAogICAgICAgICAgIC5bLCAuKFJJREVOQU1FLCBkYXRlLCBkYXRldGltZSwgU0FDVE1JTildICU+JSAKICAgICAgICAgICAuWywgYDo9YChUWVBFID0gIlNBQ1RNSU4iLCBXQUlUVElNRSA9IFNBQ1RNSU4sIFNBQ1RNSU4gPSBOVUxMKV0sCiAgICAgICAgIHggJT4lIAogICAgICAgICAgIC5bLCAuKFJJREVOQU1FLCBkYXRlLCBkYXRldGltZSwgU1BPU1RNSU4pXSAlPiUgCiAgICAgICAgICAgLlssIGA6PWAoVFlQRSA9ICJTUE9TVE1JTiIsIFdBSVRUSU1FID0gU1BPU1RNSU4sIFNQT1NUTUlOID0gTlVMTCldKQogICAgKQp9CgpkdCA8LSB1bmlxdWUocmJpbmRsaXN0KGFwcGx5KGZpbGVzLCAxLCBmdW5jdGlvbih4KSB7IAogICAgZnJlYWQocGFzdGUwKCJkYXRhLyIsIHhbImZpbGVQYXRoIl0pKSAlPiUKICAgIC5bIWlzLm5hKFNQT1NUTUlOKSAmIFNQT1NUTUlOID49IDAgfCAhaXMubmEoU0FDVE1JTikgJiBTQUNUTUlOID49IDBdICU+JQogICAgLlssIFJJREVOQU1FIDo9IHhbInJpZGVOYW1lIl1dCiAgfSksIHVzZS5uYW1lcyA9IFRSVUUpKSAlPiUKICBsb25nZXJEYXRhKC4pICU+JQogIC5bLCBgOj1gKERBVEUgPSBhcy5vcmRlcmVkKGFzLkRhdGUoZGF0ZSwgZm9ybWF0ID0gIiVtLyVkLyVZIikpLAogICAgICAgICAgIGRhdGUgPSBOVUxMLAogICAgICAgICAgIERBVEVUSU1FID0gcm91bmRfdGltZShkYXRldGltZSwgNjAqNSwgZmxvb3IpLAogICAgICAgICAgIGRhdGV0aW1lID0gTlVMTCldICU+JQogIC5bLCBgOj1gKE1PTlRIID0gbW9udGgoREFURVRJTUUpLAogICAgICAgICAgIERBWSA9IG1kYXkoREFURVRJTUUpLAogICAgICAgICAgIFRJTUUgPSBhcy5JVGltZShEQVRFVElNRSksCiAgICAgICAgICAgREFURVRJTUUgPSBOVUxMKV0gJT4lCiAgLlssIFdBSVRUSU1FbWVhbiA6PSBtZWFuKGxvZyhXQUlUVElNRSksIG5hLnJtID0gVFJVRSksCiAgICBieSA9IC4oUklERU5BTUUsIFRZUEUsIERBVEUsIE1PTlRILCBEQVksIFRJTUUpXSAlPiUKICAuWywgV0FJVFRJTUUgOj0gTlVMTF0gJT4lCiAgLltvcmRlcihSSURFTkFNRSwgREFURSwgVFlQRSwgVElNRSldICU+JQogIHVuaXF1ZSgpICU+JQogIGRjYXN0KC4sIERBVEUgKyBNT05USCArIERBWSArIFRJTUUgfiBSSURFTkFNRSArIFRZUEUsIAogICAgICAgIHZhbHVlLnZhciA9ICJXQUlUVElNRW1lYW4iKQoKZHRbZHQgPT0gIk5hTiIgfCBkdCA9PSAiLUluZiJdIDwtIE5BCnByaW50KGR0KQpgYGAKCmBgYHtyfQpSSURFTkFNRSA8LSBjKCJkd2FyZnNfdHJhaW4iLCAiYWxpZW5fc2F1Y2VycyIsICJkaW5vc2F1ciIsIAogICAgICAgICAgICAgICAiZXhwZWRpdGlvbl9ldmVyZXN0IiwgImZsaWdodF9vZl9wYXNzYWdlIiwgImtpbGltYW5qYXJvX3NhZmFyaXMiLCAKICAgICAgICAgICAgICAgIm5hdmlfcml2ZXIiLCAicGlyYXRlc19vZl9jYXJpYmJlYW4iLCAicm9ja19uX3JvbGxlcmNvYXN0ZXIiLCAKICAgICAgICAgICAgICAgInNsaW5reV9kb2ciLCAic29hcmluIiwgInNwYWNlc2hpcF9lYXJ0aCIsICJzcGxhc2hfbW91bnRhaW4iLCAKICAgICAgICAgICAgICAgInRveV9zdG9yeV9tYW5pYSIpCk9QRU5EQVRFIDwtIGFzLkRhdGUoYygiMjAxNC8wNS8yOCIsICIyMDE4LzA2LzMwIiwgIjE5OTgvMDQvMjIiLCAiMjAwNi8wNC8wOSIsIAogICAgICAgICAgICAgICAgICAgICAgICIyMDE3LzA1LzI3IiwgIjE5OTgvMDQvMjIiLCAiMjAxNy8wNS8yNyIsICIxOTczLzEyLzE3IiwgCiAgICAgICAgICAgICAgICAgICAgICAgIjE5OTkvMDcvMjkiLCAiMjAxOC8wNi8zMCIsICIyMDA1LzA1LzE1IiwgIjE5ODIvMTAvMDEiLCAKICAgICAgICAgICAgICAgICAgICAgICAiMTk5Mi8wNy8xNyIsICIyMDA4LzA1LzMxIikpClNQTEFTSCA8LSBjKEZBTFNFLCBGQUxTRSwgRkFMU0UsIEZBTFNFLCBUUlVFLCBGQUxTRSwgRkFMU0UsIFRSVUUsICBGQUxTRSwgRkFMU0UsCiAgICAgICAgICAgIEZBTFNFLCBGQUxTRSwgVFJVRSwgIEZBTFNFKQpJTkRPT1IgPC0gYyhGQUxTRSwgRkFMU0UsIFRSVUUsICBGQUxTRSwgVFJVRSwgRkFMU0UsIFRSVUUsICBUUlVFLCAgVFJVRSwgIEZBTFNFLAogICAgICAgICAgICBUUlVFLCAgVFJVRSwgIEZBTFNFLCBUUlVFKQpBR0VISUVSQVJDSFkgPC0gYygxMCwgMTMsICA0LCAgOCwgMTEsIDUsIDEyLCAgMSwgIDYsIDE0LCA3LCAgMiwgIDMsICA5KQpEVVJBVElPTiA8LSBjKDMsIDIuNSwgMy41LCA0LCA2LCAyMCwgNSwgNy41LCAxLjUsIDMsIDgsIDE2LCAxOCwgNi41KQpXQUlUUEVSSFVORFJFRCA8LSBjKDUsIDEwLCAzLCA0LCA0LCA0LCA1LCAxLjUsIDIuNSwgNSwgMywgMywgMy41LCA0LjUpClBBUksgPC0gdG91cHBlcihjKCJtayIsICJocyIsICJhayIsICJhayIsICJhayIsICJhayIsICJhayIsICJtayIsICJocyIsICJocyIsICJlcCIsIAogICAgICAgICAgImVwIiwgIm1rIiwgImhzIikpCmR0TWV0YSA8LSBkYXRhLnRhYmxlKFJJREVOQU1FLCBPUEVOREFURSwgQUdFSElFUkFSQ0hZLCBTUExBU0gsIElORE9PUiwgUEFSSywgRFVSQVRJT04sIFdBSVRQRVJIVU5EUkVEKQpgYGAKCiMgKipJIERJRCBBIExPRyBUUkFOU0ZPUk0qKgoKYGBge3Igd2FybmluZz1GQUxTRX0KbGlicmFyeShHR2FsbHkpCgpzdW1tYXJ5KGR0KQoKc2FwcGx5KHVuaXF1ZShkdE1ldGEkUEFSSyksIGZ1bmN0aW9uKHgpIHsKICByaWRlcyA8LSBkdE1ldGEkUklERU5BTUVbZHRNZXRhJFBBUksgPT0geF0KICBjb2xzIDwtICgxOm5jb2woZHQpKVtncmVwbChwYXN0ZTAocmlkZXMsIGNvbGxhcHNlID0gInwiKSwgY29sbmFtZXMoZHQpKV0KICBwcmludChnZ3BhaXJzKGR0WywgLi5jb2xzXSwgdGl0bGUgPSBwYXN0ZSgiQ29ycmVsYXRpb24gcGxvdCBmb3IgcmlkZXMgaW4iLCB4KSwgCiAgICAgICAgICAgICAgICB1cHBlciA9IGxpc3QoY29udGludW91cyA9IHdyYXAoImNvciIsIHNpemUgPSAzKSksCiAgICAgICAgICAgICAgICBwcm9ncmVzcyA9IEZBTFNFKSArCiAgICAgICAgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA2KSkpCn0pCmBgYAoKIyAqKlRJTUUgSVMgSU4gU0VDT05EUyBTSU5DRSBNSUROSUdIVCoqCgpgYGB7ciwgZWNobyA9IEZBTFNFLCByZXN1bHRzPSdoaWRlJywgZmlnLmtlZXA9J2FsbCd9CmxpYnJhcnkodHJlZSkKbGlicmFyeShjYXJldCkKbGlicmFyeShycGFydC5wbG90KQoKc2V0LnNlZWQoMTIzNCkKcm93UGlja2VyIDwtIHNhbXBsZShjKFRSVUUsIEZBTFNFKSwgbnJvdyhkdCksIHJlcGxhY2UgPSBUUlVFLCBwcm9iID0gYyguNSwgLjUpKQp0cmFpbiA8LSBkdFtyb3dQaWNrZXIsIF0KdGVzdCA8LSBkdFshcm93UGlja2VyLCBdCgpsYXBwbHkodW5pcXVlKGR0TWV0YSRQQVJLKSwgZnVuY3Rpb24oeCkgewogICMgZ2V0IHJpZGVzIHRoYXQgYXJlIGluIHRoZSBzYW1lIHBhcmssIGRhdGUsIGFuZCB0aW1lCiAgcmlkZXMgPC0gYyhjb2xuYW1lcyh0cmFpbilbZ3JlcGwocGFzdGUwKGR0TWV0YSRSSURFTkFNRVtkdE1ldGEkUEFSSyA9PSB4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlID0gInwiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXModHJhaW4pKV0sCiAgICAgICAgICAgICAiREFURSIsICJUSU1FIikKICAjIGdldCB0aGUgYWN0dWFsIHJpZGUgdGltZSB2YXJpYWJsZXMKICBhY3R1YWxzIDwtIHJpZGVzW2dyZXBsKCIoU0FDVE1JTikiLCByaWRlcyldCiAgIyByZXR1cm4gZGVjaXNpb24gdHJlZXMgZm9yIHRoZSBhY3R1YWwgcmlkZSB0aW1lIHZhcmlhYmxlcwogIHJldHVybih0cmVlcyA8LSBzYXBwbHkoYWN0dWFscywgZnVuY3Rpb24oeSkgewogICAgdHIgPC0gcnBhcnQoYXMuZm9ybXVsYShwYXN0ZSh5LCAifiAuIikpLCB0cmFpblssIC4ucmlkZXNdKQogICAgcnBhcnQucGxvdCh0ciwgbWFpbiA9IHkpCiAgICByZXR1cm4odHIpCiAgICB9KSkKfSkKYGBgCgpgYGB7cn0KIyBtZXRhZGF0YSA8LSB1bmlxdWUocmJpbmRsaXN0KGxpc3QoZnJlYWQoImRhdGEvbWV0YWRhdGEvbWV0YWRhdGEuY3N2IiwgbmEuc3RyaW5ncyA9IGMoIiIpKSwgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWFkKCJkYXRhL21ldGFkYXRhL21ldGFkYXRhX29sZC5jc3YiLCBuYS5zdHJpbmdzID0gYygiIikpKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSBUUlVFKSkgJT4lCiMgICAuWywgREFURSA6PSBhcy5vcmRlcmVkKGZvcm1hdChhcy5EYXRlKERBVEUsIGZvcm1hdCA9ICIlbS8lZC8leSIpKSldICU+JQojICAgZndyaXRlKCJuZXdNZXRhZGF0YS5jc3YiKQptZXRhZGF0YSA8LSBmcmVhZCgiZGF0YS9tZXRhZGF0YS9uZXdNZXRhZGF0YS5jc3YiLCBuYS5zdHJpbmdzID0gIiIpICU+JQogIC5bLCBEQVRFIDo9IGFzLm9yZGVyZWQoZm9ybWF0KGFzLkRhdGUoREFURSwgZm9ybWF0ID0gIiVtLyVkLyV5IikpKV0KY29sbmFtZXMobWV0YWRhdGEpIDwtIHRvdXBwZXIoY29sbmFtZXMobWV0YWRhdGEpKQoKdG1wIDwtIGdyZXAoIk9QRU58Q0xPU0V8UFJERFRbMS0yXXsxfXxTSFdOVFsxLTJdezF9fEZJUkVUWzEtMl17MX18UFJETlRbMS0yXXsxfXxTVU5TRVQiLCAKICAgICAgICAgICAgY29sbmFtZXMobWV0YWRhdGEpLCB2YWx1ZSA9IFRSVUUpCm1ldGFkYXRhIDwtIG1ldGFkYXRhWyFkdXBsaWNhdGVkKG1ldGFkYXRhJERBVEUpXQptZXRhZGF0YVssICh0bXApIDo9IGxhcHBseSguU0QsIGFzLklUaW1lKSwgLlNEY29scyA9IHRtcF0KaGVhZChtZXRhZGF0YSkKIyB3aGljaChtZXRhZGF0YSRNS0ZJUkVUMSA9PSBtZXRhZGF0YSRNS0ZJUkVUMikKZGF0ZXRpbWUgPC0gZGF0YS50YWJsZSgiREFURSIgPSByZXAobWV0YWRhdGEkREFURSwgZWFjaCA9IDI4OCksIAogICAgICAgICAgICAgICAgICAgICAgICJUSU1FIiA9IGFzLklUaW1lKHJlcChzZXEoMCozNjAwLCAyNCozNjAwLTEsIGJ5ID0gNjAqNSkpKSkKc2hvd3MgPC0gZ3JlcCgiUFJERFRbMS0yXXsxfXxTSFdOVFsxLTJdezF9fEZJUkVUWzEtMl17MX18UFJETlRbMS0yXXsxfSIsIAogICAgICAgICAgICAgIGNvbG5hbWVzKG1ldGFkYXRhKSwgdmFsdWUgPSBUUlVFKQpzaG93VHlwZSA8LSBjKCJQUkREVCIsICJTSFdOVCIsICJGSVJFVCIsICJQUkROVCIpCnRtcCA8LSBsYXBwbHkodG91cHBlcih1bmlxdWUoZHRNZXRhJFBBUkspKSwgZnVuY3Rpb24oeCkgewogIHR5cGUgPC0gZ3JlcChwYXN0ZTAoeCwgc2hvd1R5cGUsIGNvbGxhcHNlID0gInwiKSwgc2hvd3MsIHZhbHVlID0gVFJVRSkKICB0eXBlIDwtIHVuaXF1ZShzdHJfZXh0cmFjdCh0eXBlLCBwYXN0ZTAoc2hvd1R5cGUsIGNvbGxhcHNlID0gInwiKSkpCiAgbGFwcGx5KHR5cGUsIGZ1bmN0aW9uKHkpIHsKICAgIGNvbHMgPC0gYygiREFURSIsIGdyZXAocGFzdGUwKHgsIHkpLCBzaG93cywgdmFsdWUgPSBUUlVFKSkKICAgIHkgPC0gbWVsdChtZXRhZGF0YVssIC4uY29sc10sCiAgICAgICAgIG1lYXN1cmUudmFycyA9IGNvbHNbLTFdLAogICAgICAgICB2YXJpYWJsZS5uYW1lID0gcGFzdGUwKHgsIHkpLAogICAgICAgICB2YWx1ZS5uYW1lID0gcGFzdGUwKHgsIHksICJUSU1FIikpCiAgICB5IDwtIG1lcmdlKGRhdGV0aW1lLCB5LAogICAgICAgICAgYnkueCA9IGMoIkRBVEUiLCAiVElNRSIpLAogICAgICAgICAgYnkueSA9IGMoIkRBVEUiLCBncmVwKCJUSU1FIiwgbmFtZXMoeSksIHZhbHVlID0gVFJVRSkpLAogICAgICAgICAgYWxsLnggPSBUUlVFKQogICAgeSA8LSB5WywgIWMoIkRBVEUiLCAiVElNRSIpXQogICAgcmV0dXJuKHkpCiAgfSkKfSkKdG1wIDwtIHJsaXN0OjpsaXN0LmNiaW5kKHVubGlzdCh0bXAsIHJlY3Vyc2l2ZSA9IEZBTFNFKSkKY29scyA8LSB1bmlxdWUoY29sbmFtZXModG1wKSkKdG1wIDwtIHRtcFssIC4uY29sc10KdG1wIDwtIGNiaW5kKGRhdGV0aW1lLCB0bXApCgpjb2xzIDwtICFncmVwbChwYXN0ZTAoc2hvd3MsIGNvbGxhcHNlID0gInwiKSwgY29sbmFtZXMobWV0YWRhdGEpKQptZXRhZGF0YSA8LSBtZXJnZSh0bXAsIG1ldGFkYXRhWywgLi5jb2xzXSwgYWxsLnggPSBUUlVFLCBieSA9ICJEQVRFIikKCm1ldGFkYXRhW1RJTUUgPj0gYXMuSVRpbWUoIjA2OjAwOjAwIikgfCBUSU1FIDw9IGFzLklUaW1lKCIwMzowMDowMCIpXQoKdG1wIDwtIG1lcmdlKGR0LCBtZXRhZGF0YSwgYnkgPSAiREFURSIsIGFsbC54ID0gVFJVRSkgJT4lCiAgLlssIERBVEUgOj0gYXMub3JkZXJlZChmb3JtYXQoYXMuRGF0ZShEQVRFKSwgZm9ybWF0ID0gIiVtLSVkIikpXQphcy5JVGltZSh1bmlxdWUodW5saXN0KG1ldGFkYXRhWywgLihNS0VNSE9QRU4sIEVQRU1IT1BFTiwgSFNFTUhPUEVOLCBBS0VNSE9QRU4pXSkpKQojIGR0IDwtIHRtcApybSh0bXApCnJtKG1ldGFkYXRhKQpoZWFkKGR0KQpgYGAKCmBgYHtyfQpzZXQuc2VlZCgxMjM0KQpyb3dQaWNrZXIgPC0gc2FtcGxlKGMoVFJVRSwgRkFMU0UpLCBucm93KGR0KSwgcmVwbGFjZSA9IFRSVUUsIHByb2IgPSBjKC41LCAuNSkpCnRyYWluIDwtIGR0W3Jvd1BpY2tlciwgXQp0ZXN0IDwtIGR0WyFyb3dQaWNrZXIsIF0KY29sbmFtZXModHJhaW4pIDwtIHRvdXBwZXIoY29sbmFtZXModHJhaW4pKQojIGxhcHBseSh1bmlxdWUoZHRNZXRhJFBBUkspLCBmdW5jdGlvbih4KSB7CmxhcHBseSh1bmlxdWUoZHRNZXRhJFBBUkspLCBmdW5jdGlvbih4KSB7CiAgIyBnZXQgcmlkZXMgdGhhdCBhcmUgaW4gdGhlIHNhbWUgcGFyaywgZGF0ZSwgYW5kIHRpbWUKICByaWRlcyA8LQogICAgYyhjb2xuYW1lcyh0cmFpbilbZ3JlcGwocGFzdGUwKGModG91cHBlcihkdE1ldGEkUklERU5BTUVbZHRNZXRhJFBBUksgPT0geF0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGUwKCIoXiIsIHRvdXBwZXIoeCksICIpfCgiLCB0b3VwcGVyKHgpLCAiJCkiKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2UgPSAifCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZXModHJhaW4pKV0sCiAgICAgICJEQVRFIiwgIk1PTlRIIiwgIkRBWSIsICJUSU1FIiwKICAgICAgIldEV19USUNLRVRfU0VBU09OIiwgIkRBWU9GV0VFSyIsICJEQVlPRllFQVIiLCAiV0VFS09GWUVBUiIsICJNT05USE9GWUVBUiIsICJZRUFSIiwgIlNFQVNPTiIsICJIT0xJREFZUFgiLCAiSE9MSURBWU0iLCAiSE9MSURBWU4iLCAiSE9MSURBWSIsICJXRFdUSUNLRVRTRUFTT04iLCAiV0RXUkFDRU4iLCAiV0RXRVZFTlROIiwgIldEV0VWRU5UIiwgIldEV1JBQ0UiLCAiV0RXU0VBU09OIiwgIldEV01BWFRFTVAiLCAiV0RXTUlOVEVNUCIsICJXRFdNRUFOVEVNUCIsICJIT0xJREFZSiIsICJJTlNFU1NJT04iLCAiSU5TRVNTSU9OX0VOUk9MTE1FTlQiLCAiSU5TRVNTSU9OX1dEVyIsICJJTlNFU1NJT05fRExSIiwgIklOU0VTU0lPTl9TUVJUX1dEVyIsICJJTlNFU1NJT05fU1FSVF9ETFIiLCAiSU5TRVNTSU9OX0NBTElGT1JOSUEiLCAiSU5TRVNTSU9OX0RDIiwgIklOU0VTU0lPTl9DRU5UUkFMX0ZMIiwgIklOU0VTU0lPTl9EUklWRTFfRkwiLCAiSU5TRVNTSU9OX0RSSVZFMl9GTCIsICJJTlNFU1NJT05fRFJJVkVfQ0EiLCAiSU5TRVNTSU9OX0ZMT1JJREEiLCAiSU5TRVNTSU9OX01BUkRJX0dSQVMiLCAiSU5TRVNTSU9OX01JRFdFU1QiLCAiSU5TRVNTSU9OX05ZX05KIiwgIklOU0VTU0lPTl9OWV9OSl9QQSIsICJJTlNFU1NJT05fTkVXX0VOR0xBTkQiLCAiSU5TRVNTSU9OX05FV19KRVJTRVkiLCAiSU5TRVNTSU9OX05PVEhXRVNUIiwgIklOU0VTU0lPTl9QTEFORVMiLCAiSU5TRVNTSU9OX1NPQ0FMIiwgIklOU0VTU0lPTl9TT1VUSFdFU1QiLCAiU1VOU0VUX1dEVyIsICJQQVJUWVNFQVNPTl9XRFciLCAiV0RXTUlOVEVNUF9NRUFOIiwgIldFQVRIRVJfV0RXSElHSCIsICJXRUFUSEVSX1dEV0xPVyIsICJXRUFUSEVSX1dEV1BSRUNJUCIpCiAgIyBnZXQgdGhlIGFjdHVhbCByaWRlIHRpbWUgdmFyaWFibGVzCiAgYWN0dWFscyA8LSByaWRlc1tncmVwbCgiKFNBQ1RNSU4pIiwgcmlkZXMpXQogICMgcmV0dXJuIGRlY2lzaW9uIHRyZWVzIGZvciB0aGUgYWN0dWFsIHJpZGUgdGltZSB2YXJpYWJsZXMKICByZXR1cm4odHJlZXMgPC0gc2FwcGx5KGFjdHVhbHMsIGZ1bmN0aW9uKHkpIHsKICAgIHRyIDwtIHJwYXJ0KGFzLmZvcm11bGEocGFzdGUoeSwgIn4gLiIpKSwgdHJhaW5bLCAuLnJpZGVzXSkKICAgIHJwYXJ0LnBsb3QodHIsIG1haW4gPSB5KQogICAgcmV0dXJuKHRyKQogICAgfSkpCn0pCmBgYAoK